/**
 * 加一
给定一个由 整数 组成的 非空 数组所表示的非负整数，在该数的基础上加一。

最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外，这个整数不会以零开头。

 

示例 1：

输入：digits = [1,2,3]
输出：[1,2,4]
解释：输入数组表示数字 123。
示例 2：

输入：digits = [4,3,2,1]
输出：[4,3,2,2]
解释：输入数组表示数字 4321。
示例 3：

输入：digits = [0]
输出：[1]
 */


/**
 * 1.从最后一个值去遍历
 * 2.只要是%10 === 0， 就直接继续遍历，否则就返回值即可
 * 3.最后，只要遍历完还没有结果的，就往前加1
 * @param {*} digits 
 */
var plusOne = function(digits) {
    for(let i = digits.length - 1; i >= 0; i--) {
        digits[i] = digits[i] + 1;
        digits[i] = digits[i] % 10;
        if(digits[i] !== 0) return digits;
    }
    // 最后没有遍历完，从数组头部加1
    digits.unshift(1);
    return digits
}

console.log(plusOne([9,9,8,9]))